/**
 * 类型控制流分析 其实是一直在不断增强的，
 * 在 4.5、4.6、4.7 版本中都有或多或少的场景增强。
 * 查看 本机TypeScript版本，可以使用 npm view typescript version 查看
 * 而这里说的增强，其实就包括了：对可辨识联合类型的分析能力。
 * 比如下面这个例子在此前（4.6 版本以前）的 TypeScript 代码中会报错，
 * 而在 4.6 版本中则对这一情况下的 联合类型辨识（即元组） 做了支持。
*/
type Args = ['a', number] | ['b', string];

type Func = (...args: ["a", number] | ["b", string]) => void;

const f1: Func = (kind, payload) => {
    if (kind === "a") {
        // 仍然是 string | number
        payload.toFixed();
    }
    if (kind === "b") {
        // 仍然是 string | number
        payload.toUpperCase();
    }
};

//export {}：解决“无法重新声明块范围变量”错误提示问题
export { }